package test_package;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class Test7 {
    public static void main(String[] args) {
        // 动态代理的本质：在原有的方法下添加新功能
        // 获取要增强的方法
        InvocationHandler handler = (proxy, method, args1) -> {
            if (method.getName().equals("swim")) {
                System.out.println("去游泳咯🏊‍~");
            }
            return null;
        };
        Swim swimImpl = (Swim) Proxy.newProxyInstance(
                Swim.class.getClassLoader(), // 传入ClassLoader
                new Class[]{Swim.class}, // 传入要实现的接口
                handler // 传入处理调用方法的InvocationHandler
        );
        swimImpl.swim();
    }
}
interface Swim{
    void swim();
}
